﻿using System.Security.Cryptography;
using System.Text;

namespace CSharpHelpers.Encrypts
{
    class MD5EncryptHelper
    {
        /// <summary>
        /// 对字符串进行MD5加密
        /// </summary>
        /// <param name="toencrypt">需要加密字符串</param>
        /// <returns>加密字符串</returns>
        public static string MD5Encrypt(string toencrypt)
        {
            //实例化一个md5对像 
            var md5 = MD5.Create();

            // 加密后是一个字节类型的数组，这里要注意编码UTF8/Unicode等的选择　 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(toencrypt));

            // 通过使用循环，将字节类型的数组转换为字符串，此字符串是常规字符格式化所得 
            var result = string.Empty;

            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母，如果使用大写（X）则格式后的字符是大写字符 
                result = result + s[i].ToString("X2");
            }

            return result;
        }
    }
}
